package com.lhs.Page;

import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data;
import org.springframework.util.StringUtils;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;

@Data
public class PageParam {

    /**
     * 当前页码
     */
    @Min(value = 1, message = "当前页码不能小于1")
    private Integer pageNum = 1;

    /**
     * 每页大小
     */
    @Min(value = 1, message = "每页大小不能小于1")
    @Max(value = 200, message = "每页大小不能大于200")
    private Integer pageSize = 10;

    /**
     * 排序字段
     */
    private String sortField;

    /**
     * 排序方式：asc/desc
     */
    private String sortOrder;

    /**
     * 构建 MyBatis-Plus 分页对象
     */
    public <T> Page<T> buildPage() {
        Page<T> page = new Page<>(pageNum, pageSize);
        addOrderIfValid(page);
        return page;
    }

    /**
     * 添加排序条件（若字段有效）
     */
    private <T> void addOrderIfValid(Page<T> page) {
        if (StringUtils.hasText(sortField)) {
            if ("desc".equalsIgnoreCase(sortOrder)) {
                page.addOrder(OrderItem.desc(sortField));
            } else {
                page.addOrder(OrderItem.asc(sortField));
            }
        }
    }
}
